summaryrefslogtreecommitdiff
path: root/app/[lng]/evcp/(evcp)/evaluation-target-list/page.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'app/[lng]/evcp/(evcp)/evaluation-target-list/page.tsx')
-rw-r--r--app/[lng]/evcp/(evcp)/evaluation-target-list/page.tsx80
1 files changed, 23 insertions, 57 deletions
diff --git a/app/[lng]/evcp/(evcp)/evaluation-target-list/page.tsx b/app/[lng]/evcp/(evcp)/evaluation-target-list/page.tsx
index a0523eea..886d061d 100644
--- a/app/[lng]/evcp/(evcp)/evaluation-target-list/page.tsx
+++ b/app/[lng]/evcp/(evcp)/evaluation-target-list/page.tsx
@@ -1,22 +1,15 @@
import * as React from "react"
import { Metadata } from "next"
import { type SearchParams } from "@/types/table"
-import { getValidFilters } from "@/lib/data-table"
import { Shell } from "@/components/shell"
import { DataTableSkeleton } from "@/components/data-table/data-table-skeleton"
-import { HelpCircle } from "lucide-react"
-import {
- Popover,
- PopoverContent,
- PopoverTrigger,
-} from "@/components/ui/popover"
-import { Button } from "@/components/ui/button"
import { Badge } from "@/components/ui/badge"
import { getDefaultEvaluationYear, searchParamsEvaluationTargetsCache } from "@/lib/evaluation-target-list/validation"
import { getEvaluationTargets } from "@/lib/evaluation-target-list/service"
-import { EvaluationTargetsTable } from "@/lib/evaluation-target-list/table/evaluation-target-table"
import { InformationButton } from "@/components/information/information-button"
+import { EvaluationTargetsTable } from "@/lib/evaluation-target-list/table/evaluation-target-table"
+
export const metadata: Metadata = {
title: "협력업체 평가 대상 관리",
description: "협력업체 평가 대상을 확정하고 담당자를 지정합니다.",
@@ -26,63 +19,38 @@ interface EvaluationTargetsPageProps {
searchParams: Promise<SearchParams>
}
-
-
export default async function EvaluationTargetsPage(props: EvaluationTargetsPageProps) {
const searchParams = await props.searchParams
+
+ // ✅ 간소화된 파싱
const search = searchParamsEvaluationTargetsCache.parse(searchParams)
- const validFilters = getValidFilters(search.filters)
-
- // 기본 필터 처리 (통일된 이름 사용)
- let basicFilters = []
- if (search.basicFilters && search.basicFilters.length > 0) {
- basicFilters = search.basicFilters
- console.log("Using search.basicFilters:", basicFilters);
- } else {
- console.log("No basic filters found");
- }
-
- // 모든 필터를 합쳐서 처리
- const allFilters = [...validFilters, ...basicFilters]
-
- // 조인 연산자도 통일된 이름 사용
- const joinOperator = search.basicJoinOperator || search.joinOperator || 'and';
-
- // 현재 평가년도 (필터에서 가져오거나 기본값 사용)
+
+ // 현재 평가년도
const currentEvaluationYear = search.evaluationYear || getDefaultEvaluationYear()
-
- // Promise.all로 감싸서 전달
+
+ // ✅ 단순화된 서비스 호출 (필터 처리는 테이블에서 담당)
const promises = Promise.all([
- getEvaluationTargets({
- ...search,
- filters: allFilters,
- joinOperator,
- })
+ getEvaluationTargets(search)
])
return (
<Shell className="gap-4">
- {/* 간소화된 헤더 */}
+ {/* Header */}
<div className="flex items-center justify-between space-y-2">
- <div className="flex items-center justify-between space-y-2">
- <div className="flex items-center gap-2">
- <div className="flex items-center gap-2">
- <h2 className="text-2xl font-bold tracking-tight">
- 협력업체 평가 대상 관리
- </h2>
- <InformationButton pagePath="evcp/evaluation-target-list" />
- </div>
- <Badge variant="outline" className="text-sm">
- {currentEvaluationYear}년도
- </Badge>
-
- </div>
+ <div className="flex items-center gap-2">
+ <h2 className="text-2xl font-bold tracking-tight">
+ 협력업체 평가 대상 관리
+ </h2>
+ <InformationButton pagePath="evcp/evaluation-target-list" />
+ <Badge variant="outline" className="text-sm">
+ {currentEvaluationYear}년도
+ </Badge>
</div>
</div>
-
- {/* 메인 테이블 (통계는 테이블 내부로 이동) */}
+
+ {/* Main Table */}
<React.Suspense
- key={JSON.stringify(searchParams)} // URL 파라미터가 변경될 때마다 강제 리렌더링
+ key={`evaluation-targets-${search.page}-${JSON.stringify(search.filters)}-${search.joinOperator}-${search.search || 'no-search'}`}
fallback={
<DataTableSkeleton
columnCount={12}
@@ -106,12 +74,10 @@ export default async function EvaluationTargetsPage(props: EvaluationTargetsPage
/>
}
>
- {currentEvaluationYear &&
- <EvaluationTargetsTable
- promises={promises}
+ <EvaluationTargetsTable
+ promises={promises}
evaluationYear={currentEvaluationYear}
/>
-}
</React.Suspense>
</Shell>
)